
"""
深度遍历是一种尽可能深的访问节点的算法。它从根节点开始，一直沿着一条路径访问到叶节点，然后再回溯并访问其他路径。
DFS可以使用栈（Stack）或递归来实现。
"""


def dfs_recursive(graph, start, visited=None):
    if visited is None:
        visited = set()
    visited.add(start)
    result = [start]
    for neighbor in graph[start]:
        if neighbor not in visited:
            result.extend(dfs_recursive(graph, neighbor, visited))
    return result


if __name__ == "__main__":
    # 示例图（使用邻接表表示）
    _graph = {
        'A': ['B', 'C'],
        'B': ['A', 'D', 'E'],
        'C': ['A', 'F'],
        'D': ['B'],
        'E': ['B', 'F'],
        'F': ['C', 'E']
    }

    print(dfs_recursive(_graph, 'A'))
    # 输出: ['A', 'B', 'D', 'E', 'F', 'C']（顺序可能不同，因为字典无序）

